import sys
import os
import json
import urllib.request
from pprint import pprint
import datetime
from datetime import timedelta
import mysql.connector
import csv
import codecs

import MyLogger
import MyLib

#Déclaration
arguments = dict() #dict
i = 0 #Int
config_json = {} #Json
statusSupervision = "OK"

#####################################################################
#Les definitions

#Procedure de lecture
def read() :
    global config_json, statusSupervision, array_tag
    try:
        MyLogger.logger.debug("Début read")

        url = config_json["config_testPhp"][0]["url"]+"?ctrl=ok";

        opener = urllib.request.FancyURLopener({})
        response = opener.open(url)
        page = response.read().decode('utf-8')
        json_data = json.loads(page)

        statut = "OK"
        if json_data["total"] == json_data["succes"]:
            statut = "OK"
        else:
            statut = "KO"

        #supervision
        cnx_ring = mysql.connector.connect(user=config_json["config_db"]["db"], database=config_json["config_db"]["db"], password=config_json["config_db"]["mdp"], host=config_json["config_db"]["host"])
        cur_ring = cnx_ring.cursor(buffered=True)
        sql = "INSERT INTO `tab_log` (`id` ,`dateTime` ,`type` ,`commentaires`) VALUES (NULL ,  NOW(),  5,  '[INFO][Statut:"+statut+"][Succes:"+str(json_data["succes"])+"][Echec:"+str(json_data["echec"])+"][Total:"+str(json_data["total"])+"]TestU API REST');"
        try:
            cur_ring.execute(sql)
            cnx_ring.commit()
        except mysql.connector.Error as err:
            MyLogger.logger.error("Erreur : "+format(err))
            MyLogger.logger.debug("SQL : "+sql)       
        cnx_ring.close()
        
        MyLogger.logger.debug("Fin read")
    except Exception as e:
        MyLogger.logger.error("Erreur pendant read : ("+format(e)+")")

#Procedure Say More
def more() :
    MyLogger.logger.info("Les options disponible sont : 'more','read'.")
    MyLogger.logger.info("Exemple de syntax pour 'updateAll' : 'python ....read_testPhp\read_testPhp.py ....read_testPhp\exemple.config.read_testPhp.json read'.")
    MyLogger.logger.info("Exemple de syntax pour 'more' : '....read_testPhp\read_testPhp.py more'.")  

#####################################################################
#Le programme

#Message de bienvenu.
MyLogger.logger.info ("Bienvenue dans le script pour la supervision des tests Unitaire Php.")

#Récupération des arguments.
for x in sys.argv :
    i += 1
    if i == 2 :
        arguments["jsonFile"] = x
    elif i == 3 :
        arguments["action"] = x
        if x not in ["read","more"] :
            MyLogger.logger.warning("Votre premier argument ("+x+") est incorrect, seul 'more','read' sont aurorisés.")
            sys.exit("Erreur")
        else :
            MyLogger.logger.info("Mode d'action choisi : "+x+".")
            arguments["action"] = x
            
    if len(arguments) == 0 :
        arguments["action"] = "more"

#Initialisation
config_json = MyLib.charger_config(arguments["jsonFile"]) 

#Affichage        
if arguments["action"] == "read" :
    read()
elif arguments["action"] == "more" :
    more()

#Message de fin.
MyLogger.logger.info ("Fin du script.")
sys.exit(0)

    
